package db

import (
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/schema"
	Config "jy_go/config"
	"jy_go/jy_log"
	"time"
)

var (
	Db *gorm.DB
	username = Config.Config("config","mysql","username")
	password = Config.Config("config","mysql","password")
	host 	 = Config.Config("config","mysql","host")
	port 	 = Config.Config("config","mysql","port")
	database = Config.Config("config","mysql","database")
	charset  = Config.Config("config","mysql","charset")
	)

func GetDb() *gorm.DB {
	dsn :=  username + ":" + password + "@tcp(" + host + ":" + port + ")/" + database + "?charset=" + charset + "&parseTime=True&loc=Local"

	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
		NamingStrategy: schema.NamingStrategy{
			SingularTable: true,  //表名尾部不加s
			TablePrefix: Config.Config("config","mysql","prefix"),   // 表名前缀，`admin` 的表名应该是 `jy_admin`
		},SkipDefaultTransaction: true,
	})
	if err != nil {
		jy_log.JyLog("数据库连接失败，err：" + err.Error())
		panic("数据库连接失败:" + err.Error())
	}
	Db = db
	// 获取通用数据库对象 sql.DB，然后使用其提供的功能
	sqlDB, err := db.DB()
	if err != nil {
		jy_log.JyLog("数据库连接失败，err：" + err.Error())
		panic("数据库连接失败:" + err.Error())
	}

	// SetMaxIdleConns 用于设置连接池中空闲连接的最大数量。
	sqlDB.SetMaxIdleConns(100)

	// SetMaxOpenConns 设置打开数据库连接的最大数量。
	sqlDB.SetMaxOpenConns(100)

	// SetConnMaxLifetime 设置了连接可复用的最大时间。
	sqlDB.SetConnMaxLifetime(time.Minute)

	return Db
}




